package com.maoatao.easycodegen.framework.definition;

import com.maoatao.easycodegen.framework.model.BaseQuery;
import com.maoatao.easycodegen.framework.model.Pagination;

import java.io.Serializable;
import java.util.List;

/**
 * BaseService
 *
 * @param <K> 主键类型
 * @param <B> BO类型
 * @param <Q> Query类型
 * @author MaoAtao
 */
public interface BaseService<K extends Serializable, B, Q extends BaseQuery<K, Q>> {

    Pagination<B> pageByQuery(Q q);

    List<B> listByQuery(Q q);

    long countByQuery(Q q);

    B findById(K id);

    K create(B b);

    boolean update(B b);

    boolean deleteById(K id);

}
